package com.ym.core.utils.qiniu;

import com.alibaba.fastjson.JSONObject;
import com.qiniu.util.StringMap;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;

/**
 * 亚米自定义上传的策略
 *
 * @author: 李涛
 * @version: 2019年08月02日 11:28
 */
@Data
public class YamiUpPutPolicy extends UpPutPolicy {
	/**
	 * 系统
	 */
	private String system = "$(x:system)";

	/**
	 * 表名
	 */
	private String hashKey = "$(x:hashKey)";

	/**
	 * 表名
	 */
	private String table = "$(x:table)";

	/**
	 * 字段
	 */
	private String field = "$(x:field)";

	/**
	 * 文件名
	 */
	private String fileName = "$(x:fileName)";

	/**
	 * 文件大小
	 */
	private String fileSize = "$(x:fileSize)";

	/**
	 * 文件扩展名
	 */
	private String fileExt = "$(x:fileExt)";

	/**
	 * 上传时间
	 */
	private String upTime = "$(x:upTime)";

	/**
	 * 上传人
	 */
	private String upPerson = "$(x:upPerson)";

	/**
	 * 备注
	 */
	private String remark = "$(x:remark)";


	/**
	 * 生成上传策略
	 *
	 * @return
	 */
	public static String buildPolicy() {
		YamiUpPutPolicy yamiUpPutPolicy = new YamiUpPutPolicy();
		return JSONObject.toJSONString(yamiUpPutPolicy);
	}

	/**
	 * 构建上传，客户端的策略参数
	 *
	 * @param system
	 * @param table
	 * @param field
	 * @param upPerson
	 * @param upTime
	 * @param remark
	 * @return
	 */
	public static StringMap createPolicyParams(
			String system, String hashKey, String table, String field,
			String upPerson, String upTime, String remark,
			String fileName, String fileSize
	) {
		StringMap params = new StringMap();
		if (StringUtils.isNotBlank(system)) {
			params.put("x:system", system);
		}
		if (StringUtils.isNotBlank(hashKey)) {
			params.put("x:hashKey", hashKey);
		}
		if (StringUtils.isNotBlank(table)) {
			params.put("x:table", table);
		}
		if (StringUtils.isNotBlank(field)) {
			params.put("x:field", field);
		}
		if (StringUtils.isNotBlank(upPerson)) {
			params.put("x:upPerson", upPerson);
		}
		if (StringUtils.isNotBlank(upTime)) {
			params.put("x:upTime", upTime);
		}
		if (StringUtils.isNotBlank(remark)) {
			params.put("x:remark", remark);
		}
		if (StringUtils.isNotBlank(fileName)) {
			params.put("x:fileName", fileName);
		}
		if (StringUtils.isNotBlank(fileSize)) {
			params.put("x:fileSize", fileSize);
		}
		return params;
	}
}
